package basic

import (
	"fmt"
	"unicode/utf8"
)
/**
 range 相当于char

 */
func Range()  {
	s := "123它大" // 默认按照utf8 中文3个英文1个 6
	fmt.Println("range", len(s))

	// for byte 遍历ascii
	// for range rune 遍历unicode int32存的是unicode

	// range
	// 1 utf8 解码
	// 2 解出来每个字符转unicode
	// 3 转完之后就放到rune 4 字节的类型里面
	for i,v := range s{
		fmt.Printf("(%d %X %c)", i, v, v)
	}

	// 统计字符串个数 统计有多少个字符 这个不统计长度有几个字符就多少长度 获取字符数
	fmt.Println(utf8.RuneCountInString(s))

	sbyte := []byte(s)
	for len(sbyte) > 0 {
		// ch 字符  size 字符的size 英文1 中文3
		ch, size := utf8.DecodeRune(sbyte)
		fmt.Println(ch, size)
		fmt.Printf("%c", ch)
		sbyte = sbyte[size:]
	}

	// 或者直接转
	// []rune()
}
